amazonS3文件操作知识点汇总 您所在的位置:网站首页 OSS上传文件后下载报错 NoSuchKey The specified key amazonS3文件操作知识点汇总

amazonS3文件操作知识点汇总

2024-07-11 17:38| 来源: 网络整理| 查看: 265

1.文件上传时,对于不存在路径会是啥结果?

如果上传的存储桶不存在,会报错。如果是存储桶下面的文件夹不存在,则会创建一个并保存进去你上传的文件。第二次上传同样的路径,应为已经存在,则直接保存。如果上传的路径的 一级目录 前面多了斜杠“/”,也会报错。举个例子: 指定的文件上传的key为:/temp/20200723/小小的船-2129566950.pptx,则就会报错。

The specified key does not exist. (Service: Amazon S3; Status Code: 404; Error Code: NoSuchKey; Request ID: DE8C45718259ACD7;

在这里插入图片描述

2.amazonS3能够实现文件操作

上传,下载,复制,删除,但是没有直接的移动操作。并且通过在进入amazonS3进行配置生命周期的规则支持后,就可以实现对上传文件的过期时间的设置。这个过期时间的实现必须的前提条件就是要开启对存储桶指定目录的生命周期。如下图是对temp目录设置好的生命周期规则。其中前面这个transient_rule即是ruleId。 在这里插入图片描述 在这里插入图片描述

3.剩下一些工具类的实现 package com.util; import com.amazonaws.auth.AWSStaticCredentialsProvider; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.io.Resource; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframework.web.client.RestTemplate; import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.Delete; import software.amazon.awssdk.services.s3.model.DeleteObjectsResponse; import software.amazon.awssdk.services.s3.model.ObjectIdentifier; import software.amazon.awssdk.services.s3.model.S3Exception; import software.amazon.awssdk.services.s3.paginators.ListObjectsV2Iterable; import java.io.*; import java.nio.file.Path; import java.util.ArrayList; import java.util.List; /** * AmazonS3文件操作工具类 * * @author zhanglifeng * @date 2020-07-01 */ public class AmazonS3Util { private static final Logger LOGGER = LoggerFactory.getLogger(AmazonS3Util.class); /** * access_key_id 你的亚马逊S3服务器访问密钥ID */ private static final String ACCESS_KEY = "AIEKIAF3TXCLQT6M7A7L"; /** * secret_key 你的亚马逊S3服务器访问密钥 */ private static final String SECRET_KEY = "3wyLbaxZ62XnMMz517IB36c63jeRev6e8HhxemSS"; /** * end_point 你的亚马逊S3服务器连接路径和端口(新版本不再需要这个,直接在创建S3对象的时候根据桶名和Region自动获取) * * 格式: https://桶名.s3-你的Region名称.amazonaws.com * 示例: https://xxton.s3-cn-north-1.amazonaws.com */ //private static final String END_POINT = "https://xxton.s3-cn-north-1.amazonaws.com"; /** * bucketname 你的亚马逊S3服务器创建的桶名 */ private static final String S3_BUCKET_NAME = "media.fenglizhang.com"; /** * 创建访问凭证对象 */ private static final BasicAWSCredentials awsCreds = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY); /** * 创建s3对象 */ private static final AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(awsCreds)) //设置服务器所属地区 .withRegion(Regions.US_WEST_1) .build(); /** * 经过测试,文件上传的方法这个要比下面的uploadToS3的快。 * * @param key 文件在bucket中的存储文件名 * @param env 当前项目的环境:dev,test,stage,prod * @param filePath 待上传的文件存放位置 * @param s3CdnBaseUrl cdn在不同环境的url * @return */ public static String uploadToS3Fast(String key, String env, String filePath, String s3CdnBaseUrl) { long startTime = System.currentTimeMillis()


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有